import os
import sys

# 将项目根目录添加到Python路径
sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))

from app import create_app, db
from models import User, Course
from datetime import datetime, timedelta
import random

def create_test_data(app):
    """创建在线学习测试数据"""
    with app.app_context():
        try:
            # 获取管理员用户
            admin = User.query.filter_by(username='admin').first()
            if not admin:
                print("错误：找不到管理员用户，请先运行 create_admin.py")
                return
            
            # 创建一些测试课程
            courses = [
                {
                    'title': '园林设计基础入门',
                    'description': '本课程将介绍园林设计的基本概念、原则和方法，帮助初学者建立园林设计的基础认知。',
                    'content': '''# 园林设计基础入门

## 第一章：园林设计概述

### 1.1 什么是园林设计
园林设计是将自然要素和人工要素有机结合，创造优美环境的艺术。

### 1.2 园林设计的基本原则
- 因地制宜
- 尊重自然
- 艺术性与实用性统一
- 可持续发展

## 第二章：设计要素

### 2.1 空间组织
- 空间层次
- 空间序列
- 空间尺度

### 2.2 植物配置
- 植物类型
- 季相变化
- 色彩搭配

### 2.3 园路设计
- 路线组织
- 铺装材料
- 细部处理

## 第三章：设计方法

### 3.1 前期调研
- 场地分析
- 需求分析
- 资料收集

### 3.2 方案设计
- 概念发展
- 空间布局
- 细部设计

### 3.3 施工图设计
- 总平面图
- 竖向设计
- 施工详图'''
                },
                {
                    'title': '景观照明设计技巧',
                    'description': '探讨景观照明设计的关键要点，包括照明原理、设计方法和实际案例分析。',
                    'content': '''# 景观照明设计技巧

## 第一章：照明基础

### 1.1 照明的基本概念
- 照度
- 亮度
- 色温
- 显色性

### 1.2 照明设备类型
- LED灯具
- 投光灯
- 地埋灯
- 水下灯

## 第二章：照明设计方法

### 2.1 照明效果
- 重点照明
- 环境照明
- 装饰照明

### 2.2 照明控制
- 时间控制
- 亮度调节
- 场景切换

## 第三章：实际应用

### 3.1 园路照明
- 照明方式
- 灯具选择
- 安装位置

### 3.2 水景照明
- 水下照明
- 岸边照明
- 喷泉照明

### 3.3 植物照明
- 树木照明
- 花境照明
- 草坪照明'''
                },
                {
                    'title': '植物配置艺术',
                    'description': '深入讲解园林植物配置的艺术，包括植物选择、搭配原则和实践技巧。',
                    'content': '''# 植物配置艺术

## 第一章：植物认知

### 1.1 植物分类
- 乔木
- 灌木
- 地被
- 藤本

### 1.2 植物特性
- 形态特征
- 生长习性
- 季相变化
- 生态习性

## 第二章：配置原则

### 2.1 生态原则
- 适地适树
- 群落结构
- 生态效益

### 2.2 艺术原则
- 层次感
- 韵律感
- 色彩搭配
- 质地对比

## 第三章：实践技巧

### 3.1 常见配置模式
- 整齐式
- 自然式
- 混合式

### 3.2 特殊场景配置
- 入口景观
- 庭院空间
- 滨水区域
- 屋顶花园'''
                }
            ]
            
            print("开始创建测试课程...")
            for course in courses:
                # 随机生成创建时间（最近30天内）
                created_at = datetime.utcnow() - timedelta(
                    days=random.randint(0, 30),
                    hours=random.randint(0, 23),
                    minutes=random.randint(0, 59)
                )
                
                course_obj = Course(
                    title=course['title'],
                    description=course['description'],
                    content=course['content'],
                    user_id=admin.id,
                    views=random.randint(50, 500),
                    created_at=created_at,
                    updated_at=created_at
                )
                db.session.add(course_obj)
                db.session.commit()
                print(f"已创建课程：{course['title']}")
            
            print("\n测试数据创建完成！")
            print(f"已创建 {len(courses)} 个课程")
            
        except Exception as e:
            print(f"错误：{str(e)}")
            db.session.rollback()
            raise

def main():
    """主函数"""
    try:
        # 创建应用实例
        app = create_app()
        
        # 创建测试数据
        create_test_data(app)
        
    except Exception as e:
        print(f"初始化失败：{str(e)}")
        sys.exit(1)

if __name__ == '__main__':
    main() 